#ifndef _TIMESTAMP_H_
#define _TIMESTAMP_H_

#include <time.h>
#include <stdio.h>
#include <stdint.h>
#include <string.h>
#include <stdbool.h>

#define UTC_BASE_YEAR                    1970  // Unix起始年
#define MONTH_PER_YEAR                   12    // 一年12个月
#define DAY_PER_YEAR                     365   // 平年天数
#define SEC_PER_DAY                      86400 // 一天的秒数
#define SEC_PER_HOUR                     3600  // 一小时的秒数
#define SEC_PER_MIN                      60    // 一小时分钟数

/**
 * @brief 时间格式
 *
 */
typedef struct
{
  uint16_t Year;   // 年
  uint16_t Month;  // 月
  uint16_t Date;   // 日
  uint16_t Week;   // 周
  uint16_t Hour;   // 时
  uint16_t Minute; // 分
  uint16_t Second; // 秒
} TimeFormat_t;

/**
 * @brief 当前时间转换时间戳
 *
 * @param pTransitionTimeIn - 时间
 * @retval uint32_t         - 实时时间戳
 */
extern uint32_t MakeTimestamp(TimeFormat_t *pTransitionTimeIn);

/**
 * @brief 时间戳转换实际时间
 *
 * @param Timestamp          - 时间戳
 * @param pTransitionTimeOut - 转换后时间
 */
extern void TimestampToNormalTime(uint32_t UtcSecond, TimeFormat_t *pTransitionTimeOut);

#endif
